package lambda;/*
 *author Administrator
 *date 2021年6月3日
 */

import java.sql.SQLOutput;

public class lambda {

    // 有静态代码块 会默认先加载静态代码块中的内容
    static {
        System.out.println("hello static ");
    }

    static class Like2 implements Ilike{
        @Override
        public void lambda() {
            System.out.println("i like lambda2 !  静态类");
        }
    }

    public static void main(String[] args) {
        // 普通： 声明接口方法， 实现接口方法， 调用方法
        Ilike ilike = new Like();
        ilike.lambda();

        // 静态内部类
        ilike= new Like2();
        ilike.lambda();

        // 局部内部类
        class Like3 implements Ilike{
            @Override
            public void lambda() {
                System.out.println("i like lambda3 ! 局部内部类 ");
            }
        }
        ilike= new Like3();
        ilike.lambda();

        // 匿名内部类
        ilike = new Ilike() {
            @Override
            public void lambda() {
                System.out.println("i like lambda4 !  匿名内部类");
            }
        };
        ilike.lambda();

        //lambda 简化
        ilike = ()->{};
        ilike.lambda();

        // 只能实现接口中只有一个方法的啊。。 有点不太行啊。。
        Ilove ilove = (name) -> {
            return "i love " + name;
        };
        System.out.println(ilove.iLover("林智荣 , 黄晴程 ,"));

    }
}


interface Ilike{
    void lambda();
}
interface Ilove{
    String iLover(String name);
}

class Like implements Ilike{

    @Override
    public void lambda() {
        System.out.println("i like lambda!  普通方法");
    }


}

class IloveClass implements Ilove {

    @Override
    public String iLover(String name) {
        return "i love " + name;
    }
}